import unittest
import paramunittest
from ltd.hanamaki.study.unittest.paramter.util.JDBCUtils import get_sql_content
from ltd.hanamaki.study.unittest.paramter.IoUtils.FileUtils import *

"""
    在使用 paramunittest 做数据测试的时候，要先导入  模块
"""

"""
    在编写测试用例的时候，
    数据：
    1、可以使用字典来整理
    2、也可以使用 元组 来整理
"""


# 想要使用 字典来当成 数据源  创建一个字典
def dp1_dict():
    # 字典如何创建的
    keys = ['username', 'password', 'result']
    param_dict = dict.fromkeys(keys, '123456')
    return param_dict


# 想要使用 元组 来当成 数据源  创建一个元组
def dp2_tuple():
    # 元组如何创建的
    param_tuple = ('andy', '123456', 'result')
    return param_tuple


# 想要 使用 数据库中的数据来实现 参数化
def dp3_sql():
    return get_sql_content('examtest', 'python_test_table', 'username', 'password', 'result')


# 想要 使用 文件 中的数据来实现 参数化
def dp4_file():
    return read_text(
        'C:\\Users\\edz\\Desktop\\pythonStudy-2-15\\seleniumStudy\\ltd\\hanamaki\\study\\unittest\\paramter\\IoUtils\\data.txt')


# 想要 使用 文件(xlsx) 中的数据来实现 参数化
def dp5_file_excel():
    return read_excel(
        'C:\\Users\\edz\\Desktop\\pythonStudy-2-15\\seleniumStudy\\ltd\\hanamaki\\study\\unittest\\paramter\\IoUtils\\data.xlsx')


# 参数化中的  数据源
@paramunittest.parametrized(

    # 这里面是接受数据源的！
    dp1_dict(),
    dp2_tuple(),

    dp3_sql()[0],
    dp3_sql()[1],

    dp4_file()[0],
    dp4_file()[1],

    dp5_file_excel()[0],
    dp5_file_excel()[1],

)
class TestCase(unittest.TestCase):

    # 在一个 测试类中 如何来接收 数据源中的 数据
    # 要通过 setParameters 方法来接收数据
    def setParameters(self, username, password, result):
        self.username = username
        self.password = password
        self.result = result

    def test_myCase(self):
        print('------------------')
        print('username：', self.username)
        print('password：', self.password)
        print('result：', self.result)


if __name__ == '__main__':
    unittest.main()
